/**
 * @brief 数据通道定义。使用这个定义的数据通道可以使用epoll模块进行操作
 * @version 1.0
 * @author 宋炜
 * @date 2023-7-21
 */

#pragma once
#include <string>

enum class chType
{
	SERIAL,
	TCP_SVR,
	UDP,
	TCP_CONNECTION,
	FILE,
	CAN,
	BLE,
	RAW_SOCKET,
	GPIO
};

#if defined( WIN32 ) || defined( WINNT )
using nativeH_t = HANDLE;
#elif defined( __LINUX__ )
using nativeH_t = int;
#endif

struct dataCh
{
	chType    m_type;
	/**
	 * 
	 */
	virtual void onReadyRead( const char * data = nullptr , size_t len )  = 0;
	virtual nativeH_t native_handle() = 0;
};
